One of the most important stages in the software development cycle is the debugging stage that occurs after a software product has been shipped to customers. This stage is important because the actual experiences of users of the software product may be utilized during this stage to isolate program errors, identify frequently or infrequently used features, and to generally make the software product better and more stable.
The main focus of analysis in the after-release debugging stage is typically to identify the program errors (also referred to herein as “bugs”) that occur most frequently. By identifying the most frequently occurring bugs and fixing them, the usability experience of many users can be improved. There is another category of analysis, however, that has been generally unaddressed by previous after-release debugging systems. This category involves identifying computer systems that most frequently encounter problems during the execution of an application program. These problems may or may not include the program errors that occur most frequently amongst all users.
Statistics show that a small number of users experience a high percentage of the total number of overall problems. Such problems may include program crashes, program hangs, abrupt program terminations, and other types of abnormal program terminations. Application programs that exhibit these types of problems are generally referred to herein as being “unstable” or having “program execution instability.” An unstable program can be particularly frustrating for the computer user that frequently encounters the problems while using the program.
Previous after-release debugging systems do not provide a way to identify computer systems having the highest frequency of program execution instability and therefore do not provide a mechanism for the software developer to assist the user experiencing the problems. Accordingly, there is a need for a method, system, and apparatus for identifying computer systems having a high frequency of program execution instability and for providing custom product support to a user of such a computer system.
It is with respect to these considerations and others that the various embodiments of the present invention have been made.